<?php defined('SYSPATH') OR die('No direct access allowed.');
/**
 * Kontroler User
 *
 * @author     Grzegorz Wiktorowski
 */
class User_Controller extends Template_Controller {

    public $template = 'welcome/welcome';
    protected $session;

    public function __construct()
    {
        parent::__construct(); //necessary
        $this->session = Session::instance();
    }

    public function index()
    {
        //Jeżeli user, nie jest zalogowany następuje przekierowanie do strony głównej.
        if (!$this->session->get('user')){
            url::redirect('welcome');
        }

        //ładowanie treści dla metody index
        $content = new View('user/user_content');
        //ładowanie info dla zalogowanego użytkownika  do szablonu welcome
        $logowanie = new View('user/info_logowanie');
        //ładowanie menu i konfiguracja dla modułu user
        $menu_modul = new View('menu/menu_modul');
        //zmiemnne odpowiedizlana za aktywane menu w oknie
        //inna konfiguracja dla menu modułu user

        $this->template->title = 'Gamas Projekt Inżynierski - Personalizacja użytkownika';
        $this->template->content = $content;
    }

    /**
     * Logowanie użytkownika, dostępne z poziomu każdego kontrolera, ale zawsze przekierowuje do widoku welcome
     * @param nazwa użytkownika
     * @param hasło użytkownika
     */
    public function logowanie()
    {
        //inicjalizacja zmiennych
        $form_logowanie = array('login'=>'','haslo'=>'');
        $form_bledy = array('login'=>'', 'haslo'=>'');

        //pobranie obiektu post przechowującego dane z $_POST
        $post = $this->input->post();

        if(!empty($post)){ //jeżeli $post nie jest puste, co oznacza że przesłano dane z formularza.
            $post = $this->_v_logowanie($post); //inicjalizacja walidacji przesłanych z formularza zmiennych

            if($post->validate()){// jeżeli walidacja jest ok przechodzimy do sprawdzenia czy w abzie danych jest taki login i haslo

                $user = new User_Model; //tworzymy klasę User_model
                if ($user->logowanie($post->login, $post->haslo))//wywołujemy metodę logowanie, która zwaraca prawdę jeżeli jest ok i ustawia sesję user
                {
                    url::redirect('welcome');
                }else{
                    $form_logowanie = arr::overwrite($form_logowanie, $post->as_array());
                    $form_bledy = array('login'=>'Niepoprawny login lub hasło', 'haslo'=>'Niepoprawny login lub hasło');
                }
            }else{
                $form_logowanie = arr::overwrite($form_logowanie, $post->as_array());
                $form_bledy = $post->errors('validacja_gamas');
            }
        }

        $logowanie = new View('user/form_logowanie');
        $logowanie->akcja = 'user/logowanie';
        $logowanie->form = $form_logowanie;
        $logowanie->bledy = $form_bledy;
        $this->template->logowanie = $logowanie;

        $content = new View('welcome/welcome_content');

        $this->template->title = 'Gamas Projekt Inżynierski - Witamy';
        $this->template->content = $content;
    }

    /**
     * Wylogowanie polega na skasowaniu danych w sesji włącznie z ciastkami sesji i przekierowanie do strony głównej aplikacji Gamas
     */
    public function wylogowanie()
    {
        $this->session->destroy();
        url::redirect('welcome');
    }

    /**
     * Szukanie użytkowników spełniających przekazany warunek
     */
    public function szukaj()
    {
        $pola_szukaj = array('Nazwisko'=>'nazwisko', 'Imię'=>'imie');

        $post=$this->input->post();


    }

    /**
     * Walidacja formularza logowanie użytkownika do Gamas
     */
    private function _v_logowanie($post)
    {
        $post = new Validation($post);

        $post->pre_filter('trim', TRUE);

        $post->add_rules('login', 'required', 'length[5,45]', 'alpha_numeric');
        $post->add_rules('haslo', 'required', 'length[5,45]', 'alpha_numeric');

        return $post;
    }

    /**
     * Jeżeli w naszej klasie nie ma jakiejś metody, a ktoś chce ją wywołać ładuje się metoda '__call'
     */
    public function __call($method, $arguments)
    {
        $this->auto_render = FALSE;
        echo 'This text is generated by __call. If you expected the index page, you need to use: welcome/index/'.substr(Router::$current_uri, 8);
    }


} // End User
